home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr57 / nwnt.zip / NWNT.EXE / OEMNADNE.INF < prev    next >
INI File  |  1993-04-22  |  32KB  |  1,110 lines

  1. ;***********************************************************************
  2. ;
  3. ; OEMNADNE.INF
  4. ;
  5. ;       Novell ODI NE1000 network card SETUP INF file.
  6. ;
  7. ;***********************************************************************
  8.  
  9. ;-----------------------------------------------------------------------
  10. ; OPTION TYPE
  11. ; -----------
  12. ; This identifies the Option type we are dealing with.  The different
  13. ; possible types are:
  14. ;
  15. ; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
  16. ;
  17. ;  Types specific to networking:
  18. ;
  19. ; NetAdapter,        a netcard / adapter combination or just a netcard
  20. ; NetDriver,         just a netcard driver
  21. ; NetTransport,      a complete NDIS-compliant TDI transport stack
  22. ; NetService,        an NT networking service
  23. ; NetWork,           a complete network ensemble.
  24. ; NetProvider        a complete network which supports NT MPR protocol
  25. ;-----------------------------------------------------------------------
  26.  
  27. [Identification]
  28.     OptionType = NetAdapter
  29.  
  30. ;-----------------------------------------------------------------------
  31. ; PlatformsSupported
  32. ; ------------------
  33. ; This identifies the platforms supported by the adapter card.
  34. ; Possible types are:
  35. ;
  36. ; ISA, EISA and MCA
  37. ;-----------------------------------------------------------------------
  38.  
  39. [PlatformsSupported]
  40.     ISA
  41.     EISA
  42.     "Jazz-Internal Bus"
  43.  
  44. ;-----------------------------------------------------------------------
  45. ; OPTION LIST
  46. ; -----------
  47. ; This section lists the OEM Option key names.  These keys are locale
  48. ; independent and used to represent the option in a locale independent
  49. ; manner.
  50. ;
  51. ;-----------------------------------------------------------------------
  52.  
  53. [Options]
  54.     ODI_NE1000
  55.  
  56. [LanguagesSupported]
  57.     ENG
  58.  
  59. [OptionsTextENG]
  60.     ODI_NE1000     = "ODI Novell NE1000 Adapter"
  61.  
  62. ;***********************************************************************
  63. ; CONSTANTS FOR USING DIALOGS
  64. ;***********************************************************************
  65. [FileConstants]
  66. ;
  67. ;  File names, etc.
  68. ;
  69. UtilityInf      = "UTILITY.INF"
  70. ParamInf        = "NCPARAM.INF"
  71. subroutineinf   = "SUBROUTN.INF"
  72. Exit_Code       = 0
  73. ;ShellCode       = 0
  74.  
  75. ;
  76. ; EventLog Message File
  77. ;
  78. NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
  79. IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
  80.  
  81. ; Product Info
  82. ;
  83. Manufacturer    = "Novell"
  84. ProductMajorVersion     = "0"
  85. ProductMinorVersion     = "9"
  86. ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
  87. ;
  88. ; Hardware
  89. ;
  90. DriverName                   = "ODILOAD"
  91. OdiModules             = "ODI_Modules"
  92. ProductHardwareName          = "NE1000"
  93. ProductHardwareODI_NE1000Title   = "ODI Novell NE1000 Adapter"
  94. NetRuleHardwareType          = "nwNE1000 nwAdapter"
  95. NetRuleHardwareBindForm      = " yes yes container"
  96. ;
  97. ; Registry Key
  98. ;
  99. ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(DriverName)"\CurrentVersion"
  100. ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
  101.  
  102. ;
  103. ;  Dialog Parameters
  104. ;
  105. IRQList   = ^(IRQChoices, 1)
  106. IRQValues = ^(IRQChoices, 2)
  107. IOBaseAddrHexList = ^(IOBaseAddrChoices, 1)
  108. IOBaseAddrDecList = ^(IOBaseAddrChoices, 2)
  109. IOBaseAddrNwList  = ^(IOBaseAddrChoices, 3)
  110.  
  111. [IRQChoices]
  112. IRQ_0 = "2",2
  113. IRQ_1 = "3",3
  114. IRQ_2 = "4",4
  115. IRQ_3 = "5",5
  116.  
  117. [IOBaseAddrChoices]
  118. IOBase_1  = "0x300",768,300
  119. IOBase_2  = "0x320",800,320
  120. IOBase_3  = "0x340",832,340
  121. IOBase_4  = "0x360",864,360
  122.  
  123. [DialogConstantsENG]
  124. Help        = "&Help"
  125. Exit        = "Cancel"
  126. OK          = "OK"
  127. HelpContext = ""
  128. Continue    = "Continue"
  129. Cancel      = "Cancel"
  130.  
  131. [FileDependentDlgENG]
  132. DlgType = "RadioCombination"
  133. DlgTemplate = "NE2000"
  134. Caption = $(FunctionTitle)
  135. Label1 = "&IRQ Level:"
  136. Label2 = "I/O &Port Address:"
  137. Combo1List = $(IRQList)
  138. Combo1Out  = $(IRQValue)
  139. Combo2List = $(IOBaseAddrHexList)
  140. Combo2Out  = $(IOBaseAddress)
  141. ComboListItemsIn  = {Combo1List, Combo2List}
  142. ComboListItemsOut = {Combo1Out, Combo2Out}
  143. EditTextIn = ""
  144. EditTextLim = ""
  145. CBOptionsGreyed = {}
  146. NotifyFields = {NO, NO}
  147. HelpContext = $(!IDH_DB_OEMNADN2_INS)
  148.  
  149. [FileConstantsENG]
  150. ProCaption   = "Netware for Windows NT Setup"
  151. ProCancel    = "Cancel"
  152. ProCancelMsg = "Netware for Windows NT is not correctly installed.  "+
  153.                "Are you sure you want to cancel copying files?"
  154. ProCancelCap = "Network Setup Message"
  155. ProText1     = "Copying:"
  156. ProText2     = "To:"
  157. FunctionTitle   = "Novell NE1000 Network Card Setup"
  158. ProductSoftwareDescription      = "ODI Novell NE1000 Adapter Driver"
  159. ProductHardwareODI_NE1000Description        = "ODI Novell NE1000 Adapter"
  160.  
  161. [GeneralConstants]
  162. ;
  163. ;  Program flow control variables.
  164. ;
  165. from      = ""
  166. to        = ""
  167. ;
  168. ;  Return codes; Exit_Code is set to one of these
  169. ;
  170. ExitCodeOk     = 0
  171. ExitCodeCancel = 1
  172. ExitCodeFatal  = 2
  173.  
  174. KeyNull         = ""
  175. MAXIMUM_ALLOWED   = 33554432
  176. RegistryErrorIndex = NO_ERROR
  177. KeyProduct      = ""
  178. KeyParameters   = ""
  179.  
  180. TRUE            = 1
  181. FALSE           = 0
  182. NoTitle            = 0
  183.  
  184. ExitState   = "Active"
  185. OldVersionExisted = $(FALSE)
  186.  
  187. DriverPath      = $(!STF_NTPATH)\drivers
  188.  
  189. [date]
  190.     ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
  191.     ; Minute, Second }
  192.     Now = {} ? $(!LIBHANDLE) GetSystemDate
  193.  
  194.  
  195. ;---------------------------------------------------------------------------
  196. ; 1. Identify
  197. ;
  198. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  199. ;                as we are choosing currently.
  200. ;
  201. ; INPUT:         None
  202. ;
  203. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  204. ;                $($R1): Option Type (COMPUTER ...)
  205. ;                $($R2): Diskette description
  206. ;---------------------------------------------------------------------------
  207.  
  208. [Identify]
  209.     ;
  210.     ;
  211.     read-syms Identification
  212.  
  213.     set Status     = STATUS_SUCCESSFUL
  214.     set Identifier = $(OptionType)
  215.     set Media      = #("Source Media Descriptions", 1, 1)
  216.  
  217.     Return $(Status) $(Identifier) $(Media)
  218.  
  219. ;------------------------------------------------------------------------
  220. ; 2. ReturnOptions:
  221. ;
  222. ; DESCRIPTION:   To return the option list supported by this INF and the
  223. ;                localised text list representing the options.
  224. ;
  225. ;
  226. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  227. ;
  228. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  229. ;                                STATUS_NOLANGUAGE
  230. ;                                STATUS_FAILED
  231. ;                                STATUS_NOTSUPPORTED
  232. ;
  233. ;                $($R1): Option List
  234. ;                $($R2): Option Text List
  235. ;------------------------------------------------------------------------
  236.  
  237. [ReturnOptions]
  238.     ;
  239.     ;
  240.     set Status        = STATUS_FAILED
  241.     set OptionList     = {}
  242.     set OptionTextList = {}
  243.  
  244.     ;
  245.     ; Check if the language requested is supported
  246.     ;
  247.     set LanguageList = ^(LanguagesSupported, 1)
  248.     Ifcontains(i) $($0) in $(LanguageList)
  249.         ;
  250.         ; Check if the platforms requested is supported
  251.         ;
  252.         ifstr(i) $($1) == ""
  253.            goto returnoptions
  254.         endif
  255.  
  256.         set PlatformList = ^(PlatformsSupported, 1)
  257.         Ifcontains(i) $($1) in $(PlatformList)
  258.            goto returnoptions
  259.         else
  260.            set Status = STATUS_NOTSUPPORTED
  261.            goto finish_ReturnOptions
  262.         endif
  263.     else
  264.         set Status = STATUS_NOLANGUAGE
  265.         goto finish_ReturnOptions
  266.     endif
  267.  
  268.     ;
  269.     ; form a list of all the options and another of the text representing
  270.     ;
  271.  
  272. returnoptions = +
  273.     set OptionList     = ^(Options, 1)
  274.     set OptionTextList = ^(OptionsText$($0), 1)
  275.     set Status         = STATUS_SUCCESSFUL
  276.  
  277. finish_ReturnOptions = +
  278.     Return $(Status) $(OptionList) $(OptionTextList)
  279.  
  280. ;----------InstallOption-------------------------------------------------
  281. ;
  282. ; InstallOption:
  283. ;
  284. ;      This section is shelled to by main installation processing
  285. ;      or by NCPASHEL.INF during reconfig, removal, update, etc.
  286. ;
  287. ;
  288. ; FUNCTION:  To copy files representing Options
  289. ;            To configure the installed option
  290. ;            To update the registry for the installed option
  291. ;
  292. ; INPUT:     $($0):  Language to use
  293. ;            $($1):  OptionID to install
  294. ;            $($2):  SourceDirectory
  295. ;            $($3):  AddCopy  (YES | NO)
  296. ;            $($4):  DoCopy   (YES | NO)
  297. ;            $($5):  DoConfig (YES | NO)
  298. ;
  299. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  300. ;                            STATUS_NOLANGUAGE |
  301. ;                            STATUS_USERCANCEL |
  302. ;                            STATUS_FAILED
  303. ;
  304. ;------------------------------------------------------------------------
  305. [InstallOption]
  306.     ;
  307.     ; extract parameters
  308.     ;
  309.     set Option   = $($1)
  310.     set SrcDir   = $($2)
  311.     set AddCopy  = $($3)
  312.     set DoCopy   = $($4)
  313.     set DoConfig = $($5)
  314.  
  315.     ;
  316.     ; Check if the language requested is supported
  317.     ;
  318.     set LanguageList = ^(LanguagesSupported, 1)
  319.     Ifcontains(i) $($0) NOT-IN $(LanguageList)
  320.         Return STATUS_NOLANGUAGE
  321.     endif
  322.     Debug-Output "OEMNADTK.INF: STF_CWDIR is: "$(!STF_CWDIR)
  323.  
  324.     ; define all the constants
  325.  
  326.     set-subst LF = "\n"
  327.  
  328.     read-syms GeneralConstants
  329.     read-syms FileConstants
  330.  
  331.     read-syms DialogConstants$(!STF_LANGUAGE)
  332.     ifstr(i) $(!NTN_Origination) == "NCPA"
  333.         set Continue = "OK"
  334.     endif
  335.     read-syms FileConstants$(!STF_LANGUAGE)
  336.  
  337.     detect date
  338.  
  339.     set-title  $(FunctionTitle)
  340.  
  341.     set to   = Begin
  342.     set from = Begin
  343. ;
  344. ;  Assume all is well.
  345. ;
  346.     set CommonStatus = STATUS_SUCCESSFUL
  347.  
  348.     EndWait
  349.  
  350. ;
  351. ;   Set up the operation-mode-based variables and gaily welcome
  352. ;   the user.  If the "install mode" variable is improperly set,
  353. ;   assume this is a new installation.
  354. ;
  355.  
  356. Begin = +
  357.  
  358.     Ifstr(i) $(!NTN_InstallMode) == deinstall
  359.                 set StartLabel = removeadapter
  360.     else-Ifstr(i) $(!NTN_InstallMode) == Update
  361.                 set StartLabel = UpgradeSoftware
  362.     else-Ifstr(i) $(!NTN_InstallMode) == bind
  363.                 set StartLabel = bindingadapter
  364.     else-Ifstr(i) $(!NTN_InstallMode) == configure
  365.                 set StartLabel = configureadapter
  366.     else
  367.                 set StartLabel = installadapter
  368.                 set OEM_ABANDON_OPTIONS = {}
  369.                 set OEM_ABANDON_SOFTWARE = FALSE
  370.                 set OEM_ABANDON_ON = TRUE
  371.     endif
  372.  
  373.  
  374.     Set IRQValue = *($(IRQList),2)
  375.     Set IOBaseAddrValue = *($(IOBaseAddrValues),1)
  376.  
  377.     set from = $(fatal)
  378.     set to = $(fatal)
  379.     goto $(StartLabel)
  380.  
  381. ;-----------------------------------------------
  382. ; Installation Section
  383. ;-----------------------------------------------
  384.  
  385. installadapter = +
  386.  
  387.     goto adapteroptions
  388.  
  389.  
  390. ;-----------------------------------------------
  391. ; Configuration Section
  392. ;-----------------------------------------------
  393. ;
  394. ;   Get the current values of all the parameters
  395. ;
  396. configureadapter = +
  397.     Ifstr $(KeyProduct) == $(KeyNull)
  398.         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
  399.         Ifstr $(KeyProduct) == $(KeyNull)
  400.             set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  401.             Debug-Output "Cannot find component product key"
  402.             goto fatalregistry
  403.         Endif
  404.     Endif
  405.  
  406.     Set AdapterNumber = ""
  407.  
  408.     ;
  409.     ; Get the other parameters;  they're attached to the service parameters key
  410.     ;
  411.     Debug-Output "OEMNADNX.INF: Shelling to FindService"
  412.     Shell $(UtilityInf) FindService, $(KeyProduct)
  413.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  414.         Debug-Output "OEMNADNX.INF: FindService shell failure"
  415.         Goto ShellCodeError
  416.     Endif
  417.     Ifstr(i) $($R0) != NO_ERROR
  418.         Debug-Output "OEMNADNX.INF: FindService Shell error: "$($R0)
  419.         Goto fatalregistry
  420.     endif
  421.  
  422.     set KeyParameters = $($R2)
  423.  
  424.     ;
  425.     ;  We don't need the services key, so close it.
  426.     ;
  427.     CloseRegKey $($R1)
  428.  
  429.     Ifstr $(KeyParameters) == $(KeyNull)
  430.         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  431.         Debug-Output "Cannot find component service"
  432.         goto fatalregistry
  433.     endif
  434.  
  435.     set OldVersionExisted = $(TRUE)
  436.  
  437.     set ValueName = ""
  438.     set ValueData = ""
  439.     set ValueStr  = ""
  440.     set ValueList = {}
  441.  
  442.     ;
  443.     ; Get the old values
  444.     ;
  445.     EnumRegValue $(KeyParameters) ValueList
  446.  
  447.     ForListDo $(ValueList)
  448.  
  449.         set ValueItem = $($)
  450.         set ValueName = *($(ValueItem),1)
  451.         set ValueData = *($(ValueItem),4)
  452.         Ifstr(i) $(ValueName) == "InterruptNumber"
  453.             set IRQValue = $(ValueData)
  454.         else-ifstr(i) $(ValueName) == "IoBaseAddress"
  455.             set IOBaseAddrValue = $(ValueData)
  456.         endif
  457.  
  458.     EndForListDo
  459.  
  460.     ifstr(i) $(IRQValue) == ""
  461.         set IRQValue = *($(IRQList), 2)
  462.     endif
  463.  
  464.     ifstr(i) $(IOBaseAddrValue) == ""
  465.         set IOBaseAddrValue = *($(IOBaseAddrDecList), 1)
  466.     endif
  467. ;
  468. ;  Read the symbolic link to the ODI entry from the "OdiLoadName" value
  469. ;
  470.     GetRegValue $(KeyParameters),"OdiLoadName", CardInstanceList
  471.     Set CardInstanceName = *($(CardInstanceList),4)
  472.  
  473. adaptersetup =+
  474.  
  475.     goto adapteroptions
  476. ;
  477. ;   Let the user bang on the options until satisfied.
  478. ;
  479. adapteroptions = +
  480.     set from = adapteroptions
  481.  
  482.     set IOBaseAddress = *($(IOBaseAddrHexList), ~($(IOBaseAddrDecList),+
  483.         $(IOBaseAddrValue)))
  484.  
  485.     read-syms FileDependentDlg$(!STF_LANGUAGE)
  486.  
  487.     ui start "InputDlg"
  488.  
  489.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  490.         set IRQValue = $(Combo1Out)
  491.         set IOBaseAddress = $(Combo2Out)
  492.         ui pop 1
  493.     else-ifstr(i) $(DLGEVENT) == "BACK"
  494.         set CommonStatus = STATUS_USERCANCEL
  495.         Debug-Output "Action: exit. Bye."
  496.         ui pop 1
  497.         goto end
  498.     else
  499.         ;
  500.         ; Unknow command
  501.         ;
  502.         ui pop 1
  503.         Debug-Output "Action: unknown. Bye."
  504.         goto end
  505.     endif
  506.  
  507.     set IOBaseAddrValue = *($(IOBaseAddrDecList), ~($(IOBaseAddrHexList),+
  508.         $(IOBaseAddress)))
  509. ;
  510. ;   If installing, go create the necessary keys;
  511. ;   if configuring, they're already open.
  512. ;
  513.     ifint $(OldVersionExisted) == $(TRUE)
  514.         ifstr(i) $(!NTN_InstallMode) == configure
  515.             goto writeparameters
  516.         endif
  517.     endif
  518.  
  519.     StartWait
  520. ;
  521. ;   Create the HARDWARE\Netcard region and its corresponding service
  522. ;
  523.     Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
  524.  
  525.     ifint $($R4) != -1
  526.         Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
  527.     endif
  528.  
  529.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  530.         Debug-Output "Cannot add hardware component"
  531.         goto ShellCodeError
  532.     endif
  533.  
  534.     set RegistryErrorIndex = $($R0)
  535.  
  536.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  537.         EndWait
  538.         Debug-Output "Registry error: add hardware component"
  539.         CloseRegKey $($R1)
  540.         CloseRegKey $($R2)
  541.         CloseRegKey $($R3)
  542.         goto fatalregistry
  543.     endif
  544.  
  545. ;
  546. ;   At this point:
  547. ;     $R1  Registry key variable for HARDWARE\Netcard\(n)
  548. ;     $R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
  549. ;     $R3  Registry key handle for <service>\Parameters key
  550. ;     $R4  Adapter number assigned to adapter
  551. ;     $R5  Service name generated by combining svc name with adapter number
  552. ;
  553.     set KeyParameters = $($R3)
  554.     set KeyAdapterRules = $($R2)
  555.     set AdapterNumber = $($R4)
  556.  
  557.     Set-add TempAdapterNumber = $(AdapterNumber),0
  558.  
  559.     set CardInstanceName = $(ProductHardwareName)" #"$(TempAdapterNumber)
  560.  
  561.     set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
  562.                        {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
  563.                        {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
  564.                        {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
  565.                        {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
  566.                        {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  567.  
  568.     Debug-Output "AddValueList: $R1 = "$($R1)
  569.     Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
  570.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  571.         Debug-Output "ShellCode error"
  572.         goto ShellCodeError
  573.     endif
  574.  
  575.     CloseRegKey $($R1)
  576.  
  577.     set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
  578.     set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
  579.  
  580.     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
  581.                         {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
  582.                         {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  583.  
  584.     Debug-Output "AddValueList: KeyAdapterRules = "$(KeyAdapterRules)
  585.     Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
  586.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  587.         Debug-Output "ShellCode error."
  588.         goto ShellCodeError
  589.     endif
  590.  
  591.     set RegistryErrorIndex = $($R0)
  592.  
  593.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  594.         EndWait
  595.         Debug-Output "Resgitry error: add value list."
  596.         CloseRegKey $(KeyParameters)
  597.         CloseRegKey $(KeyAdapterRules)
  598.         goto fatalregistry
  599.     endif
  600.  
  601.     CloseRegKey $(KeyAdapterRules)
  602.  
  603.     SetRegValue $(KeyParameters) {OdiLoadName,$(NoTitle),$(!REG_VT_SZ),$(CardInstanceName)}
  604.  
  605.     goto writeparameters
  606. ;
  607. ;   REQUIRED:   $(KeyParameters) contains service Parameters key handle
  608. ;
  609. writeparameters = +
  610.     Shell $(UtilityInf), GetBusTypeNum
  611.     set BusTypeNum = $($R1)
  612.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  613.         Debug-Output "ShellCode error."
  614.         goto ShellCodeError
  615.     endif
  616. ;
  617. ;   Add the rest of the parameters to the Services area
  618. ;
  619.     set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
  620.                        {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
  621.                        {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
  622.                        {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)}}
  623.  
  624.     Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
  625.  
  626.     CloseRegKey $(KeyParameters)
  627.  
  628.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  629.         Debug-Output "ShellCode error."
  630.         goto ShellCodeError
  631.     endif
  632.  
  633.     set RegistryErrorIndex = $($R0)
  634.  
  635.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  636.         Debug-Output "Registry error: Add value list"
  637.         goto fatalregistry
  638.     endif
  639.  
  640. ;
  641. ; Check for NE1000 service, If found change start to 4 so it is not loaded
  642. ;
  643.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(MAXIMUM_ALLOWED) KeyNE1000
  644.     Ifstr(i) $(KeyNE1000) != $(KeyNull)
  645.         SetRegValue $(KeyNE1000) {Start,$(NoTitle),$(!REG_VT_DWORD),4}
  646.     Endif
  647.  
  648.     EndWait
  649.  
  650. ;
  651. ;  TRAVIS: Put the ODILOAD update info here!
  652. ;
  653.     Debug-Output "Add ODILOAD Parameters"
  654.  
  655.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\OdiLoad" $(MAXIMUM_ALLOWED) KeyOdiLoad
  656.     Ifstr $(KeyOdiLoad) == $(KeyNull)
  657.         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  658.         Debug-Output "Cannot find OdiLoad "
  659.         goto fatalregistry
  660.     Endif
  661.  
  662.     Set KeyOdiCard = $(KeyNull)
  663.     Debug-Output "CardInstanceName = "$(CardInstanceName)
  664.  
  665.     set CloseOdiModules = ""
  666.  
  667.     Ifstr(i) $(AdapterNumber) != ""
  668.         ;  This adapter was just installed; allow creation of the #nn key
  669.     CreateRegKey $(KeyOdiLoad) {$(OdiModules),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyOdiModules
  670.     Ifstr(i) $(KeyOdiModules) == $(KeyNull)
  671.         OpenRegKey $(KeyOdiLoad) "" $(OdiModules) $(MAXIMUM_ALLOWED) KeyOdiModules
  672.         Ifstr(i) $(KeyOdiLoad) == $(KeyNull)
  673.             set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  674.         Debug-Output "Cannot find OdiLoad\"$(OdiModules)
  675.             goto fatalregistry
  676.         Endif
  677.     Endif
  678.     set CloseOdiModules = "1"
  679.         CreateRegKey $(KeyOdiModules) {$(CardInstanceName),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyOdiCard
  680.     Endif
  681.  
  682.     Ifstr(i) $(KeyOdiCard) == $(KeyNull)
  683.         ;
  684.         ;  This is either an old card, or a prior version of the key existed.
  685.         ;
  686.     OpenRegKey $(KeyOdiLoad) "" $(OdiModules)\$(CardInstanceName) $(MAXIMUM_ALLOWED) KeyOdiCard
  687.     Ifstr(i) $(KeyOdiCard) == $(KeyNull)
  688.             set RegistryErrorIndex = CANNOT_FIND_COMPONEXT_SERVICE
  689.         Debug-Output "Can't create ODILOAD\"$(CardInstanceName)
  690.         goto fatalresistry
  691.     Endif
  692.     Endif
  693.  
  694.     set IOBaseAddressNw = *($(IOBaseAddrNwList), ~($(IOBaseAddrHexList),+
  695.         $(IOBaseAddress)))
  696.  
  697.     Debug-Output "OEMNADXN.INF: IOBaseAddress = "$(IOBaseAddress)
  698.  
  699.     set OdiParmList = {"Frame ETHERNET_802.3", +
  700.                "Frame ETHERNET_802.2", +
  701.                "Frame ETHERNET_II", +
  702.                "Frame ETHERNET_SNAP", +
  703.                "Port "$(IOBaseAddressNw), +
  704.                "Int "$(IRQValue)}
  705.     SetRegValue $(KeyOdiCard) {"Parameters",$(NoTitle),$(!REG_VT_MULTI_SZ),$(OdiParmList)}
  706.  
  707.     CloseRegKey $(KeyOdiLoad)
  708.     Ifstr(i) $(CloseOdiModules) != $(KeyNull)
  709.         CloseRegKey $(KeyOdiModules)
  710.     Endif
  711.     CloseRegKey $(KeyOdiCard)
  712.  
  713. ;
  714. ; Update the card name in IpxSpxII to be the last card installed
  715. ;
  716.     set IpxParameters = $(!NTN_ServiceBase)"\IpxSpxII\Parameters"
  717.     OpenRegKey $(!REG_H_LOCAL) "" $(IpxParameters) $(MAXIMUM_ALLOWED) KeyIpxParameters
  718.     Ifstr(i) $(KeyIpxParameters) == ""
  719.         Debug-Output "OEMNADNE.INF: Can't update IpxSpxII CardName"
  720.     Else
  721.         Split-String $(CardInstanceName) " " CardNameParts
  722.     set CardNameBase = *($(CardNameParts),1)
  723.         SetRegValue $(KeyIpxParameters) {"CardName",$(NoTitle),$(!REG_VT_SZ),$(CardNameBase)}
  724.     CloseRegKey $(KeyIpxParameters)
  725.     Endif
  726.  
  727.     goto successful
  728.  
  729. ;-----------------------------------------------
  730. ; Binding section
  731. ;-----------------------------------------------
  732. bindingadapter =+
  733.     set Error = "Binding: Sorry, not yet implemented."
  734.     goto fatal
  735.  
  736. ;-----------------------------------------------
  737. ; Removeadapter section
  738. ;-----------------------------------------------
  739.  
  740. removeadapter = +
  741. ;
  742. ;  TRAVIS: Put the ODILOAD adapter removal stuff here!
  743. ;
  744.  
  745. ;
  746. ; Delete the Services\OdiLoad\Odi_Modules\xxxxxx #01 card instance.
  747. ;
  748.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyParameters
  749.     Ifstr(i) $(KeyParameters) == ""
  750.  
  751.         Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(!NTN_RegBase)
  752.  
  753.     Else
  754.  
  755.         GetRegValue $(KeyParameters),"ServiceName", ServiceNameList
  756.         Set ServiceName = *($(ServiceNameList),4)
  757.         CloseRegKey $(KeyParameters)
  758.  
  759.  
  760.         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName)"\Parameters" $(MAXIMUM_ALLOWED) KeyService
  761.     ifstr(i) $(KeyService) == ""
  762.  
  763.         Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(ServiceName)
  764.  
  765.     Else
  766.         GetRegValue $(KeyService),"OdiLoadName", CardInstanceList
  767.         Set CardInstanceName = *($(CardInstanceList),4)
  768.         CloseRegKey $(KeyService)
  769.  
  770.         Set OdiModuleName = $(!NTN_ServiceBase)"\"$(DriverName)"\"$(OdiModules)
  771.             OpenRegKey $(!REG_H_LOCAL) "" $(OdiModuleName) $(MAXIMUM_ALLOWED) KeyOdiModules
  772.             Ifstr(i) $(KeyOdiModules) == ""
  773.  
  774.                 Debug-Output "OEMNADNC.INF: removeadapter, Can't open "$(OdiModulesName)
  775.  
  776.             Else
  777.                 Debug-Output "OEMNADNC.INF: Deleting card "$(CardInstanceName)
  778.         Debug-Output "OEMNADNC.INF: From Key "$(OdiModuleName)
  779.  
  780.                 DeleteRegTree $(KeyOdiModules) $(CardInstanceName)
  781.  
  782.         FlushRegKey $(KeyOdiModules)
  783.         CloseRegKey $(KeyOdiModules)
  784.  
  785.             Endif
  786.     Endif
  787.  
  788.     Endif
  789.  
  790. ;
  791. ; Increment the OdiLoad reference count so OdiLoad is not removed as a
  792. ; service.
  793. ;
  794.  
  795.     Shell $(UtilityInf), IncrementRefCount, $(ProductKeyName)
  796.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  797.         Debug-Output "ShellCode error removeadapter"
  798.         goto ShellCodeError
  799.     Endif
  800.  
  801.     set RegistryErrorIndex = $($R0)
  802.  
  803.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  804.         goto fatalregistry
  805.     Endif
  806.  
  807.     Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  808.             $(DriverName), $(!NTN_RegBase)
  809.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  810.         Debug-Output "ShellCode error"
  811.         goto ShellCodeError
  812.     endif
  813.  
  814.     set RegistryErrorIndex = $($R0)
  815.  
  816.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  817.         goto fatalregistry
  818.     endif
  819.  
  820. ; Decrement the reference count so OdiLoad can be removed when all the
  821. ; ODI adapters have been removed.
  822. ;
  823.     Shell $(UtilityInf), DecrementRefCount, $(ProductKeyName)
  824.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  825.         Debug-Output "ShellCode error removeadapter"
  826.         goto ShellCodeError
  827.     Endif
  828.  
  829.     set RegistryErrorIndex = $($R0)
  830.  
  831.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  832.         goto fatalregistry
  833.     Endif
  834.  
  835.     goto end
  836.  
  837. ;-----------------------------------------------
  838. ; Upgrade Software section
  839. ;-----------------------------------------------
  840.  
  841. UpgradeSoftware = +
  842.     ;
  843.     ; upgrade/update hardware component
  844.     ; There is no different between upgrade and update for hardware
  845.     ; component
  846.     ;
  847.     ; 1. Get the Service Name
  848.     ; 2. Change the NetRule section if necessary
  849.     ;
  850.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
  851.           $(MAXIMUM_ALLOWED) NetworkCardKey
  852.     Ifstr(i) $(NetworkCardKey) != $(KeyNull)
  853.         ;
  854.         ; Get Service name
  855.         ;
  856.         GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
  857.         set ServiceName = *($(ServiceNameInfo), 4)
  858.  
  859.         ;
  860.         ; Change the NetRule if necessary
  861.         ;
  862.         OpenRegKey $(NetworkCardKey) "" "NetRules" +
  863.             $(MAXIMUM_ALLOWED) NetRuleKey
  864.         Ifstr(i) $(NetRuleKey) != $(KeyNull)
  865.             ;
  866.             ; Make the change....
  867.             ;
  868.         else
  869.             ;
  870.             ; Error, cannot open net rules key
  871.             ;
  872.             goto fatalregistry
  873.         endif
  874.  
  875.         CloseRegKey $(NetRules)
  876.         CloseRegKey $(NetworkCardKey)
  877.     else
  878.         ;
  879.         ; Error, cannot open network card key
  880.         ;
  881.         goto fatalregistry
  882.     endif
  883.     ;
  884.     ; 3. Change the service section of the hardware. i.e.,
  885.     ;    ParameterName change, value change, etc.
  886.     ;
  887.     OpenRegKey $(!REG_H_LOCAL) "" +
  888.           $(!NTN_ServiceBase)"\"$(ServiceName) +
  889.           $(MAXIMUM_ALLOWED) ServiceKey
  890.  
  891.     Ifstr(i) $(ServiceKey) != $(KeyNull)
  892.         ;
  893.         ; Get the ServiceKey to change the Start value
  894.         ; or Type value. Or open Parameters key to
  895.         ; change the hardware parameters if necessary.
  896.         ;
  897.         CloseRegKey $(ServiceKey)
  898.     else
  899.         ;
  900.         ; Error, cannot open network card key
  901.         ;
  902.         goto fatalregistry
  903.     endif
  904.  
  905.     goto end
  906.     ;
  907.     ; End of Upgrade Software
  908.     ;
  909.  
  910. ;
  911. ;  Escape hatches
  912. ;
  913. successful = +
  914.     goto end
  915.  
  916. abandon = +
  917.     ForListDo $(OEM_ABANDON_OPTIONS)
  918.         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  919.             $(DriverName), $($)
  920.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  921.             Debug-Output "ShellCode error"
  922.             goto ShellCodeError
  923.         endif
  924.  
  925.         set RegistryErrorIndex = $($R0)
  926.  
  927.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  928.             goto fatalregistry
  929.         endif
  930.     EndForListDo
  931.  
  932.     goto end
  933.  
  934. ;
  935. ; warning display
  936. ;
  937. warning = +
  938.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  939.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  940.         goto ShellCodeError
  941.     endif
  942.     ifstr(i) $($R1) == "OK"
  943.         goto $(to)
  944.     else-ifstr(i) $($R1) == "CANCEL"
  945.         goto $(from)
  946.     else
  947.         goto "end"
  948.     endif
  949.  
  950.  
  951. ;
  952. ; non fatal error display
  953. ;
  954. nonfatalinfo = +
  955.     Set CommonStatus = STATUS_USERCANCEL
  956.     Set Severity = STATUS
  957.     goto nonfatalmsg
  958. nonfatal = +
  959.     Set Severity = NONFATAL
  960.     goto nonfatalmsg
  961. nonfatalmsg = +
  962.     ifstr(i) $(Error) == ""
  963.         Set Severity = NONFATAL
  964.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  965.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  966.             goto ShellCodeError
  967.         endif
  968.         set Error = $($R0)
  969.     endif
  970.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
  971.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  972.         goto ShellCodeError
  973.     endif
  974.     ifstr(i) $($R1) == "OK"
  975.         goto $(from)
  976.     else
  977.         goto "end"
  978.     endif
  979.  
  980. ;
  981. ;  Registry is broken
  982. ;
  983. fatalregistry = +
  984.     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
  985.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  986.         goto ShellCodeError
  987.     endif
  988.     set Error = $($R0)
  989.     goto fatal
  990.  
  991. fataldetect = +
  992.     Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
  993.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  994.         Debug-Output "ShellCode error: cannot get an error string."
  995.         goto ShellCodeError
  996.     endif
  997.     set Error = $($R0)
  998.     Goto fatal
  999. ;
  1000. ; fatal error display
  1001. ;
  1002. fatal = +
  1003.     ifstr(i) $(Error) == ""
  1004.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  1005.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1006.             goto ShellCodeError
  1007.         endif
  1008.         set Error = $($R0)
  1009.     endif
  1010.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  1011.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1012.         goto ShellCodeError
  1013.     endif
  1014.  
  1015.     goto setfailed
  1016.  
  1017. ;
  1018. ;  Shelling error
  1019. ;
  1020. ShellCodeError = +
  1021.     set DlgType      = "MessageBox"
  1022.     set STF_MB_TITLE = "Error: "$(FunctionTitle)
  1023.     set STF_MB_TEXT  = "Shell Code Error"
  1024.     set STF_MB_TYPE  = 1
  1025.     set STF_MB_ICON  = 3
  1026.     set STF_MB_DEF   = 1
  1027.     ui start "Error Message"
  1028.     goto setfailed
  1029.  
  1030. setfailed = +
  1031.     set CommonStatus = STATUS_FAILED
  1032.     ;
  1033.     ; if OEM_ABANDON_ON == TRUE, then remove the registry entries
  1034.     ;
  1035.     ifstr(i) $(OEM_ABANDON_ON) == TRUE
  1036.         set OEM_ABANDON_ON = FALSE
  1037.         goto abandon
  1038.     endif
  1039.     goto end
  1040.  
  1041. end = +
  1042.     goto term
  1043.  
  1044. term = +
  1045.  
  1046.     Return $(CommonStatus)
  1047.  
  1048. ;***************************************************************
  1049. ;  INSTALL SECTIONS
  1050. ;***************************************************************
  1051. [Install-Option]
  1052.     set STF_VITAL = ""
  1053.  
  1054.     ifstr(i) $(AddCopy) == "YES"
  1055.  
  1056.         ;
  1057.         ; Add the files to the copy list
  1058.         ;
  1059.         AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1060.  
  1061.     endif
  1062.  
  1063.     ifstr(i) $(DoCopy) == "YES"
  1064.  
  1065.        ;
  1066.        ; Copy files in the copy list
  1067.        ;
  1068.        set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1069.        CopyFilesInCopyList
  1070.  
  1071.     endif
  1072.  
  1073.     ifstr(i) $(DoConfig) == "YES"
  1074.         ;
  1075.         ; Add product to registry
  1076.         ;
  1077.  
  1078.         ;
  1079.         ; Finish up
  1080.     endif
  1081.  
  1082.     Exit
  1083.  
  1084. [Install-Update]
  1085.    set STF_VITAL        = ""
  1086.    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
  1087.    ;set STF_VERSION     = "YES"
  1088.  
  1089.    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1090.    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
  1091.  
  1092.    set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1093.    CopyFilesInCopyList
  1094.  
  1095.    exit
  1096.  
  1097. [Source Media Descriptions]
  1098.     1  = "Windows NT Setup Disk #1"  , TAGFILE = disk1
  1099.     2  = "Windows NT Setup CD-ROM Disk"  , TAGFILE = disk2
  1100.     99    = "LMHOST disk", TAGFILE = lmhosts
  1101. [ProductType]
  1102. STF_PRODUCT  = Winnt
  1103. STF_PLATFORM = I386
  1104. [Files-Inf]
  1105. 2,    oemsetup.inf,     SIZE=1000,    RENAME=$(!UG_Filename)
  1106. [Files-ODI_NE1000]
  1107. 2,NE1000.lan , SIZE=20000
  1108.  
  1109.  
  1110.